#!/usr/bin/python3
# _*_ coding: utf-8 _*_
#
# Copyright (C) 2024 - 2024 heihieyouheihei, Inc. All Rights Reserved 
#
# @Time    : 2024/9/9 14:05
# @Author  : Yuyun
# @File    : 买卖股票最佳时机_一次买卖.py
# @IDE     : PyCharm


"""
给定一个数组 nums ，它的第 i 个元素 nums[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票，并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润，返回 0 。

示例 1：
输入：[7,1,5,3,6,4]
输出：5
解释：在第 2 天（股票价格 = 1）的时候买入，在第 5 天（股票价格 = 6）的时候卖出，最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格；同时，你不能在买入前卖出股票。
示例 2：
输入：nums = [7,6,4,3,1]
输出：0
解释：在这种情况下, 没有交易完成, 所以最大利润为 0
"""

class Solution:
    """
    贪心解法
    局部最优：局部最小值买入
    全局最优：买入后的最大值卖出
    """
    def stock_deal_once(self, nums):
        mini = float('inf')
        result = 0
        for i in range(len(nums)):
            #   最小值买入
            mini = min(mini, nums[i])
            #   卖出，求卖出最大值
            result = max(result, nums[i] - mini)
        return result

    """
    dp[i][0] 表示第i天持有股票所得最多现金
    dp[i][0] = max(dp[i - 1][0], -nums[i]);
    第i-1天就持有股票，那么就保持现状，所得现金就是昨天持有股票的所得现金 即：dp[i - 1][0]
    第i天买入股票，所得现金就是买入今天的股票后所得现金即：-nums[i]
    
    dp[i][1] 表示第i天不持有股票所得最多现金
    dp[i][1] = max(dp[i - 1][1], nums[i] + dp[i - 1][0]);
    第i-1天就不持有股票，那么就保持现状，所得现金就是昨天不持有股票的所得现金 即：dp[i - 1][1]
    第i天卖出股票，所得现金就是按照今天股票价格卖出后所得现金即：nums[i] + dp[i - 1][0]
    """
    def stock_deal_once_I(self, nums):
        length = len(nums)
        dp = [[0] * 2 for _ in range(length)]
        dp[0][0] = -nums[0] #   持有股票初始值（开始必须买入）
        dp[0][1] = 0    #   不持有股票初始值
        for i in range(1, length):
            dp[i][0] = max(dp[i - 1][0], -nums[i])
            dp[i][1] = max(dp[i - 1][1], nums[i] + dp[i - 1][0])
        return dp[-1][1]

    def stock_deal_once_II(self, nums):
        length = len(nums)
        dp0, dp1 = -nums[0], 0  # 注意这里只维护两个常量，因为dp0的更新不受dp1的影响
        for i in range(1, length):
            dp1 = max(dp1, dp0 + nums[i])
            dp0 = max(dp0, -nums[i])
        return dp1

if __name__ == "__main__":
    nums = list(map(int, input().split(',')))
    solution = Solution()
    result = solution.stock_deal_once(nums)
    print(result)